<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>18 迭代器简介</title>
</head>

<body>
    <h2>2.10.迭代器</h2>
    迭代器(lterator)是一种接口，为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署lterator接口，就可以完成遍历操作。<p>

        1) ES6创造了一种新的遍历命令for...of循环，lterator接口主要做for...of消费
    <p>

        2)原生具备iterator接口的数据(可用for... of遍历)
    <p>
    <ul>
        <li> Array</li>
        <li> Arguments</li>
        <li> Set</li>
        <li> Map</li>
        <li> String</li>
        <li> TypedArray</li>
        <li> NodeList</li>
    </ul>
    <p>3)工作原理
    <p>
    <ul>
        <li> 创建一个指针对象，指向当前数据结构的起始位置</li>
        <li> 第一次调用对象的next方法，指针自动指向数据结构的第一个成员</li>
        <li> 接下来不断调用next方法，指针一直往后移动，直到指向最后一个成员</li>
        <li> 每调用next方法返回一个包含value和done属性的对象</li>
    </ul>
    <script>
        const xiyou = ['ts', 'wk', 'zbj', 'sx'];

        // for (let v of xiyou) {
        //     console.log(v);
        // }

        // console.log(xiyou);
        let iterator = xiyou[Symbol.iterator]();

        // 调用对象的next方法
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
    </script>
</body>

</html>